class CommercialBank {
  public address: string = 'beijing'
  public name: string = 'wangwu'
  public count: number

  constructor(name: string, address: string) {
    this.address = address
    this.name = name
  }
  loan(): void {
    console.log(this.name + ' 银行贷款')
  }
}

/**
 * 以下两种是等效的，而第三种是不等效的
 */
// 通用函数类型
type commonFun = (...args: any) => any // s100
interface commonFuncInter {
  // 直接使用接口代表这种函数类型
  (...args: any): any // 这种写法并不是对象形式 s101 等效于s100
}

// interface commonFuncInter { // 多写重复属于接口重载了
//   eat: (...args: any) => any // 这种写法是对象形式
// }

let func: commonFun = function (count: string, number: number) {}

// 工厂函数类型[代表任意一个类的构造函数【等价JS的构造函数】的函数类型]

/**
 * 
 * TS 已经禁止直接new一个函数来创建函数对象 因为TS推荐的是class 否则又回到了传统的JS写法 所以推荐new 一个类来创建对象
function test() {
}
const t = new test()
 */
